{
    type myExclude<T, K> = T extends K ? never : T

    type myOmit<T, K> = {
        [key in myExclude<keyof T, K>]: key extends never ? never : T[key]
    }

    /**
     * extends作用：限制（约束）K 的范围只能是keyof T联合类型所在的集合中的值
     * 这一特点：泛型约束
     * */ 
    type MyOmit<T, K extends keyof T> = {
        [key in keyof T as `get:${key & string}` extends K ? never : key] : key extends never ? never : T[key]
    }
    /**
     * 第一个部分 [key in keyof T]
     * 
     */

    type User = {
        name: string;
        age: number;
        no: string
    }

    type testOmit = myOmit<User, "age" | "no"> 

    type testMyOmit = MyOmit<User, never>
}